package net.atomtree.service;

import net.atomtree.corrsepond.analyse.SpiderAnalyse;
import net.atomtree.corrsepond.factory.SparkRestFactory;
import net.atomtree.corrsepond.factory.SparkRestFactoryAdapter;
import net.atomtree.entity.Application;
import net.atomtree.entity.init.ApplicationInit;

import java.util.Properties;

/**
 * Created by czk on 2016/1/4.
 */
public class IndexService {
    public static final int SHUFFLE=0;
    public static final int ALTERNATE=1;
    public void getSpeedIndex(String jobId){
        //用户传过来一个jobid,我得到一个端口号url portAnalyse such as :4040
        String url= new SpiderAnalyse().getCurrentURL(jobId);
        //将读取到的arr string 转换成json object 或数组

        //迭代计算模式   单个stage 时间=直接拿stage的数据  处理数据的数量是task的数量    现在的-过去的

        //shuffle计算    多个stage 时间=多个stage时间加起来  处理的数据量是shuffle read  现在的-过去的
    }
    //得到通信的url
    public String getCorrespondUrl(String jobId) throws Exception {
        String baseUrl= new SpiderAnalyse().getCurrentURL(jobId);
        Application app= new ApplicationInit().init(jobId);
        String restUrl=SparkRestFactoryAdapter.URLFactory(app);
        return restUrl;
    }
    //得到url后进行rest，返回jsonArrString
    public String getRestResult(String baseUrl,Object obj,int correspondObject) throws Exception {
        // 将得到的url拼接为新的rest地址
        // new SparkRestFactory().URLFactory();
        SparkRestFactory factory=new SparkRestFactoryAdapter();
        String url="http://101.204.243.107:4040/api/v1/applications/Spark%20Pi/stages";
        String restResult=factory.Correspond(url);
        return restResult;
    }
    //通过数组来解析是哪一种mode
    public int getMode(String jobUrl){
        //访问joburl 判断有多少个数组
        return 0;
    }
    //解析rest返回的字符串，按照不同的mode来进行不同的解析
    //放到门面中做
    public Object jsonAnalyse(String jsonArrStr,int mode){
        if(mode==SHUFFLE){
            ;
        }
        if(mode==ALTERNATE){

        }
        return "";
    }

    //门面模式
    //包装了所有执行的类
    public Object invocation(String jobId) throws Exception {
//        IndexService service=new IndexService();
//        String currUrl=service.getCorrespondUrl(jobId);
//        String jsonArr=getRestResult(currUrl);
//        int countMode=service.getModel();
//        Object obj=service.jsonAnalyse(jsonArr, service.getModel());
//        if (null==obj){
//            throw new Exception("json analyse error");
//        }
//        //shuffle计算
//        if(countMode==SHUFFLE){
//            return  obj;
//        }
//        //迭代计算
//        if(countMode==ALTERNATE){
//            return  obj;
//        }
//        throw new Exception();
        return "";
    }


}
